﻿namespace TZBlog
{
    public interface IUserDBAccess
    {
        List<UserEntity> GetList();
        UserEntity Get(string id);
        void Save(UserEntity entity);
        void Delete(string id);
    }
    public class UserDBAccess: DBAccessBase,IUserDBAccess
    {
        public UserDBAccess(TZBlogDBContext context):base(context) {}

        public List<UserEntity> GetList()
        {
            return _context.Users.ToList();
        }
        public UserEntity Get(string id) {
           return  _context.Users.FirstOrDefault(t => t.F_Id == id);
        }
        public void Save(UserEntity entity) 
        {
            bool isAdd = true;
            if (!string.IsNullOrEmpty(entity.F_Id))
            {
                var obj=  Get(entity.F_Id);
                if (obj != null) {
                    obj.F_Status = entity.F_Status;
                    obj.F_Password = entity.F_Password;
                    obj.F_Account = entity.F_Account;
                    obj.F_Type = entity.F_Type;
                    obj.Update();
                    _context.Update(obj);
                    isAdd = false;
                }                
            }
            if (isAdd)
            {
                entity.Create();
                _context.Add(entity);
            }
            _context.SaveChanges();
        }
        public void Delete(string id) {
            var obj = Get(id);
            if (obj != null) { 
                _context.Remove(obj);
                _context.SaveChanges();
            }
        }
    }
}
